/*
 * Copyright (c) 2022, IMMORTA Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice, this list
 *   of conditions and the following disclaimer.
 *
 * - Redistributions in binary form must reproduce the above copyright notice, this
 *   list of conditions and the following disclaimer in the documentation and/or
 *   other materials provided with the distribution.
 *
 * - Neither the name of IMMORTA Inc. nor the names of its
 *   contributors may be used to endorse or promote products derived from this
 *   software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*!
 * @file uart_reg_access.c
 * @brief This file declares or defines uart register access functions
 */

/*******Includes***************************************************************/
#include "uart_reg_access.h"

/*******Definitions************************************************************/

/*******Variables**************************************************************/

/*******Prototypes*************************************************************/

/*******Private Functions******************************************************/

/*******Code*******************************************************************/

/*******************************************************************************
 *** Function Name : UART_REG_SetErrorInterrupts
 *** Description   : Set uart all error interrupts enable(rx overflow,frame error,noise,parity error)
 ******************************************************************************/
void UART_REG_SetErrorInts(UART_Type* regBase, bool enable)
{
    UART_REG_SetIntEnable(regBase, UART_INT_RX_OVERFLOW, enable);
    UART_REG_SetIntEnable(regBase, UART_INT_FRAME_ERROR, enable);
    UART_REG_SetIntEnable(regBase, UART_INT_PARITY_ERROR, enable);
    UART_REG_SetIntEnable(regBase, UART_INT_NOSIE_ERROR, enable);
}

/*******************************************************************************
 *** Function Name : UART_REG_ClearErrorFlags
 *** Description   : Clear uart all error interrupts enable(rx overflow,frame error,noise,parity error)
 ******************************************************************************/
void UART_REG_ClearErrorFlags(UART_Type* regBase)
{
    if (UART_REG_GetStatusFlag(regBase, UART_RX_OVERFLOW)) {
        UART_REG_ClearStatusFlag(regBase, UART_RX_OVERFLOW);
    }

    if (UART_REG_GetStatusFlag(regBase, UART_FRAME_ERROR)) {
        UART_REG_ClearStatusFlag(regBase, UART_FRAME_ERROR);
    }

    if (UART_REG_GetStatusFlag(regBase, UART_PARITY_ERROR)) {
        UART_REG_ClearStatusFlag(regBase, UART_PARITY_ERROR);
    }

    if (UART_REG_GetStatusFlag(regBase, UART_NOSIE_ERROR)) {
        UART_REG_ClearStatusFlag(regBase, UART_NOSIE_ERROR);
    }
}

/*******EOF********************************************************************/
